package lib.bone.system.service;

import lib.bone.common.core.domain.ResponseDTO;
import lib.bone.common.service.BaseService;
import lib.bone.system.domain.dto.LoginBody;
import lib.bone.system.domain.dto.user.UserAddDTO;
import lib.bone.system.domain.entity.SysUser;
import lib.bone.system.domain.vo.SysUserBasic;
import lib.bone.system.domain.vo.UserBaseVO;

import java.util.List;
import java.util.Optional;

/**
 * @author  : Kindear
 * @date : 2021-11-16
 */
public interface SysUserService extends BaseService<SysUser,Long> {

    /**
     * 用户登录
     * @param loginBody
     * @return
     */
    ResponseDTO userLogin(LoginBody loginBody);

    /**
     * 用户登出
     * @return
     */
    ResponseDTO userLogout();


    /**
     * 修改密码
     * @param userId
     * @param password
     * @return
     */
    ResponseDTO<SysUser> resetUserPassword(Long userId,String password);

    /**
     * 根据部门ID查询所有用户
     * @param deptId
     * @return
     */
    List<SysUser> findByDept(Long deptId);

    /**
     * 根据ID列表查询
     */
    List<SysUser> findByIds(List<Long> userIds);

    List<SysUser> findByUserNames(List<String> userNames);

    /**
     * 构建基础信息
     */
    SysUserBasic buildBasic(SysUser user);

    /**
     * 获取全部用户基础信息
     */
    List<UserBaseVO> getAllUserBase();

    /**
     * 根据用户登录名查询
     * @param userName
     * @return
     */
    Optional<SysUser> findByUserName(String userName);

}
